const fs = require('fs');
const path = require('path');
const iconv = require('iconv-lite');

function simpleTest() {
  const testFile = path.join(__dirname, '..', 'resources', 'dic', 'a', 'abandon.txt');
  
  console.log(`测试文件: ${testFile}`);
  
  try {
    // 使用iconv-lite读取GBK编码的文件
    const buffer = fs.readFileSync(testFile);
    const content = iconv.decode(buffer, 'gbk');
    
    console.log('文件中包含词典音标的部分:');
    const startTagIndex = content.indexOf('<词典音标>');
    const endTagIndex = content.indexOf('</词典音标>');
    
    if (startTagIndex !== -1 && endTagIndex !== -1) {
      const betweenTags = content.substring(startTagIndex, endTagIndex + '</词典音标>'.length);
      console.log(betweenTags);
      
      console.log('\n词典音标标签之间的内容:');
      const innerContent = content.substring(startTagIndex + '<词典音标>'.length, endTagIndex);
      console.log('"' + innerContent + '"');
      
      console.log('\n尝试匹配CDATA:');
      // 正确转义方括号
      const cdataMatch = innerContent.match(/<!$$CDATA$$([^$$]+)$$]]>/);
      console.log('匹配结果:', cdataMatch);
      
      if (cdataMatch) {
        console.log('提取的音标编码:', cdataMatch[1]);
        
        // 测试音标解码
        const phoneticMapping = {
          'A': 'æ', 'E': 'ə', 'I': 'ɪ', 'O': 'ɒ', 'U': 'ʊ', 'R': 'ɔ', 
          '@': 'ʌ', '^': 'ɜ', 'e': 'e', 'i': 'i', 'o': 'ɑ', 'u': 'u', 'a': 'ə',
          'EI': 'eɪ', 'AI': 'aɪ', 'OI': 'ɔɪ', 'EJ': 'eɪ', 'AJ': 'aɪ', 'OJ': 'ɔɪ', 
          'IJ': 'aɪ', 'UJ': 'aʊ', 'AU': 'aʊ', 'OU': 'əʊ', 'IU': 'əʊ', 'EA': 'ɪə', 
          'IA': 'ɪə', 'UA': 'ʊə',
          'B': 'b', 'C': 'ʃ', 'D': 'ð', 'F': 'f', 'G': 'ɡ', 'H': 'h', 'J': 'dʒ', 
          'K': 'k', 'L': 'l', 'M': 'm', 'N': 'n', 'P': 'p', 'Q': 'kw', 'S': 's', 
          'T': 'θ', 'V': 'v', 'W': 'w', 'X': 'ks', 'Y': 'j', 'Z': 'z',
          '5': 'ˈ', ':': 'ː', ',': 'ˌ', '?': 'ˌ', '"': 'ˌ'
        };

        function decodePhonetic(code) {
          if (!code) return '';
          
          let result = '';
          let i = 0;
          
          while (i < code.length) {
            // 检查两个字符的组合
            if (i < code.length - 1) {
              const twoChar = code.substr(i, 2);
              if (phoneticMapping[twoChar]) {
                result += phoneticMapping[twoChar];
                i += 2;
                continue;
              }
            }
            
            // 检查单个字符
            const oneChar = code[i];
            if (phoneticMapping[oneChar]) {
              result += phoneticMapping[oneChar];
            } else {
              // 如果没有映射，保留原字符
              result += oneChar;
            }
            i += 1;
          }
          
          return '/' + result + '/';
        }
        
        const decoded = decodePhonetic(cdataMatch[1]);
        console.log('解码后的音标:', decoded);
      }
    } else {
      console.log('未找到词典音标标签');
    }
    
  } catch (error) {
    console.error(`处理文件时出错:`, error.message);
  }
}

simpleTest();